package com.link.base.base.report.service;

import com.link.base.base.report.model.GuideReport;
import com.link.base.base.report.model.SalesAmount;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * @author unknown
 * @date unknown
 * @comments 商机报表
 */
public interface GuideReportService extends BasicService<GuideReport> {
    /**
     * 逻辑是展示当前登陆人所创建的所有商机所处的各阶段汇总。
     * 就是商机上现在有个字段叫当前阶段，按照商机所处的阶段对商机数进行汇总。
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryOptyStageNum(GuideReport qr) throws Exception;

    /**
     * 一周商机数量汇总表：逻辑是当前登陆人创建的今日以前6天一直到今天每天新建的商机数
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryNewOptyNum(GuideReport qr) throws Exception;

    /**
     * 查询客户状态数量汇总
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryAccntStatusNum(GuideReport qr) throws Exception;

    /**
     * 客户关键节点推进报表
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryAccntKeyNum(GuideReport qr) throws Exception;

    /**
     * 产品销售分析（销售额）
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryProOrderSalesMoney(GuideReport qr) throws Exception;

    /**
     * 产品销售分析（订单数量）
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryProOrderSalesNum(GuideReport qr) throws Exception;

    /**
     * 销售订单状态分析
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> querySalesOrderStatusNum(GuideReport qr) throws Exception;

    /**
     * 企点客服接待统计
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryAccountPeopleNum(GuideReport qr) throws Exception;

    /**
     * 商机预算top10
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryOptyBudgtTop10(GuideReport qr) throws Exception;

    /**
     * 产品收藏top10
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryProductCollTop10(GuideReport qr) throws Exception;

    /**
     * 本周销量情况
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<SalesAmount> querySalesAmountReport(GuideReport qr) throws Exception;

    /**
     * 标签组信息
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryAccnttagReport(GuideReport qr) throws Exception;

    /**
     * 标签组详情信息
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryAccnttagItemReport(GuideReport qr) throws Exception;

    /**
     * 客户类型分析
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryAccntTypeReport(GuideReport qr) throws Exception;

    /**
     * 本周客户连接总结
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryContonectAccntReport(GuideReport qr) throws Exception;

    /**
     * 本周商机汇总分析
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryOptyStudyReport(GuideReport qr) throws Exception;

    /**
     * 本周订单数量分析
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> queryOrderNumReport(GuideReport qr) throws Exception;

    /**
     * 销售产品TOP10
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> querySalesProductTop10Report(GuideReport qr) throws Exception;

    /**
     * 品牌维度查询销售额
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> querySaleAmountByBrand(GuideReport qr) throws Exception;

    /**
     * 导购维度查询销售额
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<GuideReport> querySaleAmountByGuide(GuideReport qr) throws Exception;

    /**
     * 查询上周导购通过导购助手接待的客户数量，销售的产品种类及销售额最高的产品
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public GuideReport queryAccntTypeNumLastWeek(GuideReport qr) throws Exception;

    /**
     * 统计每周销售额（用于销售周报）
     *
     * @param qr
     * @return List GuideReport
     * @throws Exception
     */
    public List<SalesAmount> querySalesAmountWeekReport(GuideReport qr);
}
